Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

deScene.hpp

Go to the documentation of this file.
00001 ///////////////////////////////////////////////////////////////////////////////
00002 /// @file deScene.hpp
00003 ///
00004 /// @brief scene-management routines
00005 ///
00006 /// @author Assassin
00007 ///
00008 /// This file is the intellectual property of Novus Delta, LLC.. Usage of the
00009 /// contents of this file is subject to the Destiny3D Member License which
00010 /// can be found at http://www.destiny3d.com.  Any other usage is prohibited.
00011 ///
00012 /// This file is distributed "AS IS" without warranty of any kind.  Novus
00013 /// Delta, LLC. does not guarantee the fitness of the contents of this file
00014 /// for any particular purpose.
00015 ///
00016 /// Copyright (C) 2001-2003 Novus Delta, LLC. All Rights Reserved.
00017 ///
00018 /// <hr>
00019 ///                                 Change History
00020 /// <hr>
00021 ///
00022 /// @date Mar 2002
00023 /// @author Assassin
00024 /// @remarks Creation
00025 ///
00026 /// @date Mar 2003
00027 /// @author Masterg
00028 /// @remarks Terrain added
00029 ///
00030 ///////////////////////////////////////////////////////////////////////////////
00031 
00032 #ifndef DESCENE_HPP
00033 #define DESCENE_HPP
00034 
00035 // get rid of the annoying diamond-inheritance warning
00036 #pragma warning (disable : 4250)
00037 
00038 #include "deGlobalTypes.hpp"
00039 #include "deMath.hpp"           // transforms
00040 #include "deWorld.hpp"          // world object
00041 #include "deRenderStates.hpp"   // renderlight
00042 
00043 #if defined(DESCENE_DLL_EXPORTS) || defined(DESTINY3D_EXPORT_ALL)
00044 #   define DESCENE_API extern "C" DEDLL_EXPORT
00045 #elif defined(DESTINY3D_STATIC_LINK)
00046 #   define DESCENE_API extern "C"
00047 #else
00048 #   define DESCENE_API extern "C" DEDLL_IMPORT
00049 #endif
00050 
00051 #ifdef USING_DESTINY3D
00052 #ifdef _DEBUG
00053 #   ifdef DESTINY3D_STATIC_LINK
00054 #       pragma comment(lib, "deScene_sd")
00055 #   else
00056 #       pragma comment(lib, "deScened")
00057 #   endif //DESTINY3D_STATIC_LINK
00058 #else
00059 #   ifdef DESTINY3D_STATIC_LINK
00060 #       pragma comment(lib, "deScene_s")
00061 #   else
00062 #       pragma comment(lib, "deScene")
00063 #   endif //DESTINY3D_STATIC_LINK
00064 #endif //_DEBUG
00065 #endif //USING_DESTINY3D
00066 
00067 // external
00068 class IdeActor;
00069 class IdeAnimatedMesh;
00070 class IdeBitmapProxy;
00071 class IdeBoundingVolume;
00072 class IdeCamera;
00073 class IdeDriver;
00074 class IdeLineBrush;
00075 class IdeMesh;
00076 class IdePlaneFrustum;
00077 class IdePortal;
00078 class IdeRender;
00079 class IdeRenderLight;
00080 class IdeRenderMaterial;
00081 class IdeRenderTexture;
00082 class IdeSurface;
00083 class IdeVertexBuffer;
00084 class IdeWorld;
00085 
00086 //defined within
00087 class IdeSceneGraph;
00088 class IdeCollision;
00089 class IdeSceneRoom;
00090 class IdeSceneObject;
00091 class IdeSceneABT;
00092 class IdeSceneActor;
00093 class IdeSceneSky;
00094 class IdeSceneStaticMesh;
00095 class IdeSceneTerrain;
00096 class IdeSceneLight;
00097 
00098 // deprecated
00099 class IdeSceneAnimatedMesh;
00100 
00101 // factory functions
00102 DESCENE_API deBoolean       IdeScene_Initialize();
00103 DESCENE_API void            IdeScene_ShutDown();
00104 /// Get the IdeSceneGraph singleton pointer
00105 DESCENE_API IdeSceneGraph*  IdeSceneGraph_GetSceneGraphPtr();
00106 /// Create an instance of IdeCollision
00107 DESCENE_API IdeCollision*   IdeCollision_CreateCollision();
00108 /// Get the IdeSceneRoom WorldObject interface ID
00109 DESCENE_API long            IdeSceneRoom_GetWOInterfaceID();
00110 /// Get the IdeSceneObject WorldObject interface ID
00111 DESCENE_API long            IdeSceneObject_GetWOInterfaceID();
00112 
00113 //specific factory functions
00114 /// create an instance of IdeSceneABT
00115 DESCENE_API IdeSceneABT *       IdeSceneObject_CreateSceneABT();
00116 /// create an instance of IdeSceneActor
00117 DESCENE_API IdeSceneActor*      IdeSceneObject_CreateSceneActor();
00118 DESCENE_API IdeSceneAnimatedMesh* IdeSceneObject_CreateSceneAnimatedMesh();
00119 /// create an instance of IdeSceneRoom
00120 DESCENE_API IdeSceneRoom*       IdeSceneRoom_CreateRoom();
00121 /// create an instance of IdeSceneSky
00122 DESCENE_API IdeSceneSky *       IdeSceneObject_CreateSceneSky();
00123 /// create an instance of IdeSceneStaticMesh
00124 DESCENE_API IdeSceneStaticMesh* IdeSceneObject_CreateSceneStaticMesh();
00125 /// create an instance of IdeSceneTerrain
00126 DESCENE_API IdeSceneTerrain*    IdeSceneObject_CreateSceneTerrain();
00127 /// create an instance of IdeSceneLight
00128 DESCENE_API IdeSceneLight*      IdeSceneObject_CreateSceneLight();
00129 
00130 /// @TODO remove IdeScene_TestABT
00131 DESCENE_API deBoolean       IdeScene_TestABT();
00132 
00133 
00134 //=============================================================
00135 /// used to store & retrieve collision information.
00136 /// Related functions: IdeCollision_CreateCollision.
00137 //class IdeCollision
00138 DE3D_INTERFACE_(IdeCollision)
00139 {
00140 protected:
00141     virtual ~IdeCollision() {}
00142 public:
00143     /// release the collision class (deletes it)
00144     virtual long Release() = 0;
00145     
00146     /// level of detail needed for collision
00147     enum deCollideDetail
00148     {
00149         deCollidePoint      =0x01,      ///< use a point or ray
00150         deCollideSphere     =0x02,      ///< use a point with radius
00151         deCollideAABB       =0x04,      ///< use axis-aligned bounding boxes
00152         deCollideOBB        =0x08,      ///< use oriented bounding boxes
00153         deCollide_32Bit = 0x7fffffff
00154     };
00155     /// information about the object that will be colliding with things
00156     struct deCollideParams
00157     {
00158         deVec3d Start;                  ///< start point in universal space
00159         deVec3d Delta;                  ///< movement from start point
00160         deBoundSphere Sphere;           ///< bounding sphere for colliding object
00161         deAABB AABB;                    ///< AABB for colliding object
00162         IdeBoundingVolume* CustomBV;    ///< Custom Bounding Volume for colliding object
00163         deCollideDetail ThisDetail;     ///< collision detail for this object (fill in relevant members: AABB, OBB, etc)
00164         deCollideDetail WorldDetail;    ///< collision detail for other world objects
00165     };
00166     /// information about a collision that occurred
00167     struct deCollideInfo
00168     {
00169         deVec3d     Position;           ///< position at which collision occurs
00170         deVec3d     Normal;             ///< normal of surface which was collided with
00171         deDouble    Percent;            ///< percent along the (start,stop) segment where collision occurred
00172         DWORD               Contents;
00173         IdeSurface*         Surface;
00174         IdeSceneObject*     HitObject;
00175         IdeSceneRoom*       HitRoom;
00176     };
00177 
00178     /// clear out all the collisions that have accrued
00179     virtual void        Reset() = 0;
00180     
00181     /// returns the number of collisions accrued
00182     virtual long        GetNumCollisions() = 0;
00183     /// retrieves a specific collision occurrence
00184     virtual void        GetCollision(long ColNum, deCollideInfo & collision) = 0;
00185 
00186     // for use by engine only
00187     virtual deBoolean   AddCollision(const deCollideInfo & collision) = 0;
00188 };
00189 
00190 //=============================================================
00191 /// The interface class for storing and querying a 3D scene.
00192 /// Related functions: IdeSceneGraph_GetSceneGraphPtr.
00193 //class IdeSceneGraph
00194 DE3D_INTERFACE_(IdeSceneGraph)
00195 {
00196 protected:
00197     virtual ~IdeSceneGraph() {}
00198 
00199 public:
00200     struct deSceneTraversal
00201     {
00202         // input parameters
00203         IdeCamera * cam;
00204         IdeRender * render;
00205         long MaxTPortalDepth;
00206         //temporaries
00207         long CurrentPortalDepth;
00208         long CurrentPassNum;
00209         IdeSceneGraph* CurrentSceneGraph;
00210         IdePlaneFrustum* CurrentFrustum;
00211         deTransformInfo CurrentTransform;
00212         //output values
00213         deDouble FarthestDistanceFound;
00214     };
00215     
00216     // used internally by the engine only
00217     virtual long Traverse(deSceneTraversal* Params) = 0;
00218 
00219     /// specify a set of cull flags. Use bitwise OR to combine elements of deCullModes
00220     virtual deBoolean   SetCullFlags(long CullFlags) = 0;
00221     /// retrieve the current cull flags set
00222     virtual long        GetCullFlags() = 0;
00223 
00224     /// specify a set of debug flags. Use bitwise OR to combine elements of deDebugFlags
00225     virtual deBoolean   SetDebugFlags(long DebugFlags) = 0;
00226     /// retrieve the current debug flags set
00227     virtual long        GetDebugFlags() = 0;
00228 
00229     virtual IdeSceneRoom * FindRoomWithID(deWorldID WorldID, deObjectID ObjectID) = 0;
00230 
00231     /// Add an IdeSceneRoom object to the scenegraph
00232     virtual deBoolean AddRoom(IdeSceneRoom * Room) = 0;
00233     /// Remove an IdeSceneRoom object from the scenegraph
00234     virtual deBoolean RemoveRoom(IdeSceneRoom* Room) = 0;
00235 
00236     virtual deBoolean AddSceneObject(IdeSceneObject* Object) = 0;
00237     virtual void RemoveSceneObject(IdeSceneObject* Object) = 0;
00238     virtual void RepositionSceneObject(IdeSceneObject* Object) = 0;
00239 
00240     // used internally by the engine only
00241     virtual deBoolean PortalOccluded(IdePortal * portal) = 0;
00242 
00243     virtual DWORD TestIntersection(const deVec3d &Position, const deVec3d *Mins, const deVec3d *Maxs) = 0;
00244     /// test whether a collision occurs when using given Params
00245     virtual deBoolean TestCollision(const IdeCollision::deCollideParams & Params, IdeCollision * Collision) = 0;
00246     /// considers only the objects intersected at the start point
00247     virtual void ObjectExtents(IdeBoundingVolume* volume, IdeCollision * Results) = 0;
00248     virtual long LightExtents(const deVec3d& pos, const deAABB& bbox, IdeSceneLight** outBuffer, long bufferSize) = 0;
00249     
00250     /// different methods of culling that can be done in the scenegraph traversal
00251     enum deCullModes
00252     {
00253         // backface is done in hardware
00254         deCullFrustum           =(0x0001),      ///< cull using a view frustum
00255         deCullDetail            =(0x0002),      ///< cull using screen-contribution metric
00256         deCullOccludeSphere     =(0x0004),      ///< cull using sphere occlusion
00257         deCullOccludeConvHull   =(0x0008),      ///< cull using convex hull occlusion (not implemented)
00258         deCullOccludeRaster     =(0x0010),      ///< cull using image-space occlusion (not implemented)
00259         deCullFarPlaneOptimize  =(0x0020),      ///< not culling technically, but it can improve visual quality
00260         deCull_Max,
00261         deCull_32bit=(0x7fffffff)
00262     };
00263     
00264     /// debug flags for helping examine things
00265     enum deDebugFlags
00266     {
00267         deDrawAABB              =(0x0001),      ///< render AABB's for objects (in blue)
00268         deDrawOBB               =(0x0002),      ///< render OBB's for objects (in red)
00269         deDrawSphere            =(0x0004),      ///< render bounding spheres for objects
00270         deDrawSpatialPartition  =(0x0008),      ///< render the scenegraph octree
00271         deDebugFlag_Max,
00272         deDebugFlag_32bit=(0x7fffffff)
00273     };
00274 
00275     /// possible contents
00276     enum deContents
00277     {
00278         deContentsNone          =(0x00000000),  ///< nothing here (note: you can't do a bitwise-AND and get 1 with this)
00279         deContentsClear         =(0x00000001),  ///< see-through
00280         deContentsOpaque        =(0x00000002),  ///< not see-through
00281         deContentsSolid         =(0x00000004),  ///< impassable
00282         deContentsUser10        =(0x00100000),
00283         deContentsUser09        =(0x00200000),
00284         deContentsUser08        =(0x00400000),
00285         deContentsUser07        =(0x00800000),
00286         deContentsUser06        =(0x01000000),
00287         deContentsUser05        =(0x02000000),
00288         deContentsUser04        =(0x04000000),
00289         deContentsUser03        =(0x08000000),
00290         deContentsUser02        =(0x10000000),
00291         deContentsUser01        =(0x20000000),
00292         deContents_Max,
00293         deContents_32bit=(0x7fffffff)
00294     };
00295 };
00296 
00297 //=============================================================
00298 /// a base class for dealing with Scene Rooms, which can contain objects and link to other Scene Rooms.
00299 /// Related functions: IdeSceneRoom_CreateRoom, IdeSceneRoom_GetWOInterfaceID.
00300 //class IdeSceneRoom : virtual public IdeWorldObject
00301 DE3D_INTERFACE(IdeSceneRoom, IdeWorldObject)
00302 {
00303 protected:
00304     virtual ~IdeSceneRoom() {}
00305 public:
00306 
00307     // used internally by the engine only
00308     virtual void SetRoomListPtr(void * ptr) = 0;
00309     virtual void*GetRoomListPtr() = 0;
00310     
00311     // used internally by the engine only
00312     virtual long Traverse(IdeSceneGraph::deSceneTraversal* Params) = 0;
00313     virtual deBoolean TestCollision(const IdeCollision::deCollideParams & Params, IdeCollision * Collision) = 0;
00314     virtual long GetPassNum() = 0;
00315     virtual void GetAABB(deVec3d &Min, deVec3d &Max) = 0;
00316 
00317     virtual void  SetContents(DWORD contents) = 0;
00318     virtual DWORD GetContents() = 0;
00319 
00320     /// add an IdeSceneObject to the scene room
00321     virtual deBoolean AddSceneObject(IdeSceneObject * obj) = 0;
00322     /// remove an IdeSceneObject from the scene room
00323     virtual deBoolean RemoveSceneObject(IdeSceneObject * obj) = 0;
00324     /// add a portal to the scene room
00325     virtual deBoolean AddPortal(IdePortal * portal) = 0;
00326 };
00327 
00328 //=============================================================
00329 /// A base class for dealing with Scene Objects. A scene object occupies the space
00330 /// that is defined by scene rooms.
00331 /// Related functions: IdeSceneObject_GetWOInterfaceID.
00332 //class IdeSceneObject : virtual public IdeWorldObject
00333 DE3D_INTERFACE(IdeSceneObject, IdeWorldObject)
00334 {
00335 protected:
00336     virtual ~IdeSceneObject() {}
00337 public:
00338 
00339     enum activate_t
00340     {
00341         activate_visible = 0,
00342         activate_collide = 1,
00343         activate_count,
00344         activate_32bit =0x7fffffff
00345     };
00346     
00347     // list of sub-class types for GetSOInterface
00348     enum interface_t
00349     {
00350         iface_IdeSceneObject=0,
00351         iface_IdeSceneStaticMesh=1,
00352         iface_IdeSceneSky=2,
00353         iface_IdeSceneTerrain=3,
00354         iface_IdeSceneABT=4,
00355         iface_IdeSceneAnimatedMesh=5,
00356         iface_IdeSceneActor=6,
00357         iface_IdeSceneLight=7,
00358         // 6 is max
00359         iface_32Bit=0x7fffffff
00360     };
00361     virtual IdeSceneObject::interface_t GetSOIType() = 0;
00362     virtual void* GetSOInterface(IdeSceneObject::interface_t i) = 0;
00363 
00364     virtual void        PreCache(IdeDriver* pDriver) = 0;
00365     
00366     // used internally by the engine only
00367     virtual long        Traverse(IdeSceneGraph::deSceneTraversal* Params) = 0;
00368 
00369     /// Set the activation state of the object
00370     virtual void        SetActivation(activate_t a_type, deBoolean Active) = 0;
00371     /// Retrieve the activation state of the object
00372     virtual deBoolean   GetActivation(activate_t a_type) const = 0;
00373     
00374     /// retrieve the world transformation of this object.
00375     /// All bounding volumes are relative to the translation of this
00376     virtual void        GetWorldTransform(deTransformInfo & mat) = 0;
00377     /// set the world transformation of this object
00378     virtual void        SetWorldTransform(const deTransformInfo & mat) = 0;
00379     
00380     /// retrieve the local AABB (computed as the extents of the object on its local axes)
00381     virtual void        GetLocalAABB(deAABB &bbox) = 0;
00382     /// retrieve the oriented bounding box in world coordinates (local AABB transformed into world space)
00383     virtual void        GetWorldOBB(deOBB &bbox) = 0;
00384     /// retrieve the world AABB of the object. This AABB is guaranteed to contain the world OBB
00385     /// for the current orientation, and may contain the OBB no matter what its orientation.
00386     virtual void        GetWorldAABB(deAABB &bbox) = 0;
00387     
00388     virtual deVec3d     GetBoundCenter() = 0;
00389     virtual deVec3d     GetOccludeCenter() = 0;
00390     virtual void        GetWorldPos(deVec3d & PosVector) = 0;
00391     
00392     virtual deVec3d     GetWorldBoundCenter() = 0;
00393     virtual deVec3d     GetWorldOccludeCenter() = 0;
00394     virtual deDouble    GetBoundRadius() = 0;
00395     virtual deDouble    GetOccludeRadius() = 0;
00396     
00397     virtual deBoolean   IsTransparent() = 0;
00398     
00399     virtual deBoolean   OccludesObject(deVec3d &position, IdeSceneObject *so, deVec3d &NormalizedDisplacement) = 0;
00400     
00401     // used internally by the engine only
00402     virtual long        GetCurrentPassNum() const = 0;
00403     virtual deBoolean   AddRoomReference(IdeSceneRoom * ref, void * ptr) = 0;
00404     virtual void*       GetRoomReference(IdeSceneRoom * ref) = 0;
00405     virtual deBoolean   RemoveRoomReference(IdeSceneRoom * ref) = 0;
00406 };
00407 
00408 //=============================================================
00409 /// scene object used for storing & rendering large, static polygonal datasets.
00410 /// Related functions: IdeSceneObject_CreateSceneABT
00411 //class IdeSceneABT : virtual public IdeSceneObject
00412 DE3D_INTERFACE(IdeSceneABT, IdeSceneObject)
00413 {
00414 protected:
00415     virtual ~IdeSceneABT() {}
00416 public:
00417     virtual deBoolean AddGeometry(IdeMesh* pMesh, const deTransformInfo & worldpos) = 0;
00418 };
00419 
00420 //=============================================================
00421 /// scene object used for storing & rendering large terrains based on heightmaps.
00422 /// Related functions: IdeSceneObject_CreateSceneTerrain
00423 //class IdeSceneTerrain : virtual public IdeSceneObject
00424 DE3D_INTERFACE(IdeSceneTerrain, IdeSceneObject)
00425 {
00426 protected:
00427     virtual ~IdeSceneTerrain() {}
00428 public:
00429     virtual deBoolean SetTerrainHeightMap(IdeBitmapProxy * bmp) = 0;
00430     virtual deBoolean SetTerrainColorMap(IdeBitmapProxy * bmp) = 0;
00431     virtual deBoolean SetTerrainDetailMap(IdeBitmapProxy * bmp) = 0;
00432     
00433     virtual deVec3d GetTerrainScale() = 0;
00434     virtual void SetTerrainScale(deVec3d vScale) = 0;
00435     virtual void SetTerrainScale(deFloat x, deFloat y, deFloat z) = 0;
00436 
00437     virtual deTexCoord GetDetailRepeat() = 0;
00438     virtual void SetDetailRepeat(deTexCoord Repeat) = 0;
00439     virtual void SetDetailRepeat(deFloat u, deFloat v) = 0;
00440     
00441     virtual void SetHeightAt(unsigned char ucHeight, long x, long y) = 0;
00442     virtual unsigned char GetTrueHeightAt(long x, long y) = 0;
00443     virtual deFloat GetScaledHeightAt(long x, long y) = 0;
00444 
00445     virtual deDouble GetLODBias() = 0;
00446     virtual void SetLODBias(deDouble Bias) = 0;
00447 
00448     virtual long GetGMMChunkSize() = 0;
00449     virtual void SetGMMChunkSize(long ChunkSize) = 0;
00450 
00451     virtual deBoolean BuildRenderable() = 0;
00452     virtual deBoolean BuildGeoMipMap(IdeDriver* pDriver) = 0;
00453 };
00454 
00455 //=============================================================
00456 /// scene object used for rendering 360-degree skies, for atmospheric effect without a lot of geometry.
00457 /// Related functions: IdeSceneObject_CreateSceneSky
00458 //class IdeSceneSky : virtual public IdeSceneObject
00459 DE3D_INTERFACE(IdeSceneSky, IdeSceneObject)
00460 {
00461 protected:
00462     virtual ~IdeSceneSky() {}
00463 public:
00464 
00465     enum SkyType
00466     {
00467         SKY_NONE = 0,
00468         SKY_BOX,
00469         SKY_DOME,
00470         SKY_SECTOR,
00471         SKY_FORCE_32BIT = 0x7fffffff
00472     };
00473 
00474     struct SkyInfo
00475     {
00476         union Box_t
00477         {
00478             struct FaceNames_t
00479             {
00480                 IdeBitmapProxy * NegX;
00481                 IdeBitmapProxy * NegY;
00482                 IdeBitmapProxy * NegZ;
00483                 IdeBitmapProxy * PosX;
00484                 IdeBitmapProxy * PosY;
00485                 IdeBitmapProxy * PosZ;
00486             } FaceNames;
00487             IdeBitmapProxy* Faces[6];
00488         };
00489 
00490         struct Dome_t
00491         {
00492             /// @todo implement sky dome
00493         };
00494 
00495         struct Sector_t
00496         {
00497             /// @todo implement sky sector
00498         };
00499 
00500         SkyType type;
00501         union
00502         {
00503             Box_t Box;
00504             Dome_t Dome;
00505             Sector_t Sector;
00506         };
00507     };
00508 
00509     virtual deBoolean   IsLockedToCam() const = 0;
00510     virtual void        LockToCam(deBoolean Lock) = 0;
00511 
00512     virtual deBoolean   GetInfo(SkyInfo * info) const = 0;
00513     virtual deBoolean   SetInfo(const SkyInfo * info) = 0;
00514 };
00515 
00516 
00517 
00518 //=============================================================
00519 //class IdeSceneAnimatedMesh : virtual public IdeSceneObject
00520 DE3D_INTERFACE(IdeSceneAnimatedMesh, IdeSceneObject)
00521 {
00522 protected:
00523     virtual ~IdeSceneAnimatedMesh() {}
00524 public:
00525     virtual void SetMesh(IdeAnimatedMesh * mesh) = 0;
00526 };
00527 
00528 //=============================================================
00529 /// used to create instances of a static mesh in a scene.
00530 /// Related functions: IdeSceneObject_CreateSceneStaticMesh
00531 //class IdeSceneStaticMesh : virtual public IdeSceneObject
00532 DE3D_INTERFACE(IdeSceneStaticMesh, IdeSceneObject)
00533 {
00534 protected:
00535     virtual ~IdeSceneStaticMesh() {}
00536 public:
00537     virtual void SetMesh(IdeMesh* mesh) = 0;
00538     virtual void SetTransparent(deBoolean Trans) = 0;
00539 };
00540 
00541 //=============================================================
00542 /// used to create instances of actors in a scene.
00543 /// Related functions: IdeSceneObject_CreateSceneActor
00544 //class IdeSceneActor : virtual public IdeSceneObject
00545 DE3D_INTERFACE(IdeSceneActor, IdeSceneObject)
00546 {
00547 protected:
00548     virtual ~IdeSceneActor() {}
00549 public:
00550     virtual void SetActor(IdeActor* actor) = 0;
00551 };
00552 
00553 //=============================================================
00554 /// used to place lights in a scene.
00555 /// Related functions: IdeSceneObject_CreateSceneLight
00556 //class IdeSceneLight : virtual public IdeSceneObject
00557 DE3D_INTERFACE(IdeSceneLight, IdeSceneObject)
00558 {
00559 protected:
00560     virtual ~IdeSceneLight() {}
00561 public:
00562     virtual void SetLightData(const IdeRenderLight::LightData& lightdata) = 0;
00563     virtual const IdeRenderLight::LightData* GetLightData() = 0;
00564     virtual const IdeRenderLight* GetRenderLight() = 0;
00565 };
00566 
00567 #endif
00568 
00569 
00570 
00571 
00572 
00573 
00574 
00575 
00576 
00577 
00578 
00579 
00580 
00581 
00582 
00583 
00584 
00585 
00586 
00587 
00588 
00589 

Generated on Mon Sep 12 19:58:37 2005 for Destiny3D by doxygen1.3-rc3